package com.fdb.efp.nls.service.facade;

import java.math.BigDecimal;
import java.util.List;

import com.fdb.basic.framework.core.bean.SedSynCusManageVO;
import com.fdb.efp.nls.service.vo.NlsApplyInfoVO;
import org.apache.ibatis.annotations.Param;

/**
 * 网贷申请基本信息
  * TODO
  * @author heyingfeng
  * @since 2018年12月17日 下午7:47:28
  * @version 1.0
 */
public interface NlsApplyInfoService {
	
	public List<NlsApplyInfoVO> queryAllOwner(NlsApplyInfoVO nlsApplyInfoVo) throws Exception;
	
	public List<NlsApplyInfoVO> queryAllCurrOrg(NlsApplyInfoVO nlsApplyInfoVo);
	
	public List<NlsApplyInfoVO> queryAllCurrDownOrg(NlsApplyInfoVO nlsApplyInfoVo);

	public List<NlsApplyInfoVO> queryAllCurrOwnerPrd(NlsApplyInfoVO nlsApplyInfoVo);

	public int insertNlsApplyInfo(NlsApplyInfoVO inNlsApplyInfoVo) throws Exception;
	
	public int deleteByPk(NlsApplyInfoVO nlsApplyInfoVo);
	
	public int updateByPk(NlsApplyInfoVO nlsApplyInfoVo) throws Exception;
	
	public NlsApplyInfoVO queryByPk(NlsApplyInfoVO nlsApplyInfoVo);
	
	public NlsApplyInfoVO queryCopy(NlsApplyInfoVO nlsApplyInfoVo);

	public NlsApplyInfoVO queryOnTheWay(NlsApplyInfoVO nlsApplyInfoVo);

	public List<NlsApplyInfoVO> queryCertCode(NlsApplyInfoVO nlsApplyInfoVo);
	
	public List<NlsApplyInfoVO> queryListByConditions(NlsApplyInfoVO nlsApplyInfoVo);

	/**
	/**
	 * 需求编号：【2019D0519】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：qiuyf
	 * 创建日期：2019年4月19日 下午8:07:34
	 * 功能描述：通过授信申请流水号查询最新一笔数据
	 */
	public NlsApplyInfoVO qryOneByLmtApplSeq(NlsApplyInfoVO nlsApplyInfoVo);

	/**
	 * 需求编号：【2019D0519】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：qiuyf
	 * 创建日期：2019年4月20日 下午5:11:55
	 * 功能描述：根据条件查询信息
	 */
	public List<NlsApplyInfoVO> qryListByConditionsTwo(NlsApplyInfoVO nlsApplyInfoVo);

	/**
	 * 需求编号：【2019D0519】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：qiuyf
	 * 创建日期：2019年4月20日 下午5:33:44
	 * 功能描述：根据条件查询总条数
	 */
	public int queryTotalByCondition(NlsApplyInfoVO nlsApplyInfoVo);

	/**
	 * 需求编号：【2019D0519】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：qiuyf
	 * 创建日期：2019年4月23日 下午5:51:40
	 * 功能描述：通过客户证件类型、证件号码，申请状态查询在途用信信息
	 */
	public int countCustHasUsingLetter(NlsApplyInfoVO nlsApplyInfoVo);
	/**
	 * 查询【放款申请信息流水】中未获取百度照片的申请人: <br>
	 *
	 * 0.1:caoxin:2019/3/25 12:28: 查询【放款申请信息流水】中未获取百度照片的申请人: <br>
	 * @author caoxin
	 * @return
	 * @since 2019/3/25 12:28
	 * @date 2019/3/25 12:28
	 * @version 0.1
	 */
	 List<NlsApplyInfoVO> queryListByBdIdPictureState();
	 
	 /**
		 * 
		 * 用信申请临时表数据到网贷申请基本信息表有数据则更新，无则新增 <br>
		 * 0.1:weijj:2019年5月7日 下午2:37:18:新增 <br>
		 * 
		 * @author weijj
		 * @since 2019年5月7日 下午2:37:18
		 * @date 2019年5月7日 下午2:37:18
		 * @version 0.1
		 */
		public int insertOrUpdateNlsApplyInfo(List<NlsApplyInfoVO> list);

		public int batchUpdate(List<NlsApplyInfoVO> list);
		
	 /**
	 * 通过授信申请流水号查询同一笔申请下的所有授信申请: <br>
	 *
	 * 0.1:caoxin:2019/5/22 17:56: <br>
	 * @author caoxin
	 * @return
	 * @since 2019/5/22 17:56
	 * @date 2019/5/22 17:56
	 * @version 0.1
	 */
	public List<NlsApplyInfoVO> queryListByLmtApplySqe(NlsApplyInfoVO nlsApplyInfo);

	/**
	 * 需求编号：2019D0519<br/>
	 * 问题编号：<br/>
	 * 功能描述：通过创建时间模糊查询（最新更新时间为空）或最近更新时间模糊查询所有当天所有用信记录<br/>
	 * 开发人员：周才顺<br/>
	 * 创建时间：2019年5月27日 下午5:21:34<br/>
	 * @author zhoucs1
	 * @since  1.0
	 * @version 1.0
	 * @param nlsApplyInfoVO
	 * @return
	 */
	public List<NlsApplyInfoVO> queryAllByCurrentDate(NlsApplyInfoVO nlsApplyInfoVO);


	/**
	 * 开发人员：【chenxuan】
	 * 创建/修改日期：【2019/5/20】
	 * 修改描述：批量更新客户经理
	 **/
	public boolean batchUpdateCusManage(List<SedSynCusManageVO> SedSynCusManageVOList);

	/**
	 * 通过全局流水号查询授信申请: <br>
	 * 0.1:caoxin:2019/7/2 16:49:<br>
	 * @author caoxin
	 * @return
	 * @since 2019/7/2 16:49
	 * @date 2019/7/2 16:49
	 * @version 0.1
	 */
	NlsApplyInfoVO queryByGobalSerno(String gobalSerno);

	/**
	 * 需求编号：【2019D0519】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：qiuyf
	 * 创建日期：2019年7月3日 上午11:34:49
	 * 功能描述：根据全局流水号统计信息
	 */
	public int countInfosByGlobalSerno(String globalSerno);

	/**
	 * 需求编号：【2019D0519】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：qiuyf
	 * 创建日期：2019年7月8日 下午8:11:25
	 * 功能描述：通过授信申请流水号查询所有在途的支用申请信息
	 */
	public List<NlsApplyInfoVO> queryAllByLmtApplySeq(String lmtApplySeq);

	/**
	 * 需求编号：【查询在途金额】
	 * 开发人员：【chenxuan】
	 * 创建/修改日期：【2019/8/12】
	 * 修改描述：
	 * @Param [nlsApplyInfoVO]
	 * @return java.math.BigDecimal
	 **/
	public BigDecimal queryDuringAmt(NlsApplyInfoVO nlsApplyInfoVO);
/**
	 * 开发人员：luzhaoyu
	 * 创建日期：2019/9/20 14:59
	 */
	public List<NlsApplyInfoVO> querySampleAllByPk(NlsApplyInfoVO nlsApplyInfo);

	/**
	 * 通过条件查询所有信息
	 * @param prdCodes
	 * @return
	 */
	public List<NlsApplyInfoVO> queryAllByPrdCodes(List<String> prdCodes);

	int queryCountByBdIdPictureState();

	List<NlsApplyInfoVO> getFourElementsIfNullList(String prdId);
	/**
	 * 需求编号：汇商贷需求编号<br/>
	 * 问题编号：<br/>
	 * 功能描述：查询汇商贷在途的用信信息（筛选条件包括证件类型、证件号码、产品ID、用信审批状态）<br/>
	 * 开发人员：周才顺<br/>
	 * 创建时间：2019/9/3 17:11
	 * @Author zhoucs1
	 * @Version 1.0
	 * @Since   1.0
	 * @Param  [nlsApplyInfoVO]
	 * @Return int
	 */
	int countHsdCustHasUsingLetter(NlsApplyInfoVO nlsApplyInfoVO);
	/**
	 * 需求编号:2019D08--
	 * 问题编号:查询放款状态为成功而审批状态为成功，执行次数小于5的用信申请
	 * 开发人员:
	 * 创建日期:2019/11/12
	 * 功能描述:用于判断放款后如果执行次数小于5则查询互金进行信息同步
	 * 修改日期:2019/11/12
	 * 修改描述:
	 */
	List<NlsApplyInfoVO> querySuccessNlsApplyInfo();

	/**
	 * 需求编号:2019D08--
	 * 问题编号:
	 * 开发人员: caoxin
	 * 创建日期:2019/11/12
	 * 功能描述:查询放款状态为成功而审批状态为成功的用信申请信息
	 * 修改日期:2019/11/12
	 * 修改描述:
	 */
	List<NlsApplyInfoVO> queryNlsApplyInfoByDnstsAndState(NlsApplyInfoVO nlsApplyInfoVO);

	/**
	 * 根据用信申请流水号查询授信申请流水号（去重）
	 *
	 * @param list
	 * @return
	 */
	List<NlsApplyInfoVO> queryByApplySeqs(List<String> list) throws Exception;

	/**
	 * 根据用信申请流水号更新用信申请状态
	 * @param nlsApplyState
	 * @param applySeq
	 * @return
	 */
	int updateStatusByApplySeq(@Param("nlsApplyState") String nlsApplyState, @Param("applySeq") String applySeq);

	/**
	 * 根据用信申请流水号更新用信贷款号 发放号
	 * @param loanSeq 贷款号
	 * @param distrNo 发放号
	 * @param applySeq 用信申请流水号
	 * @return
	 */
	int updateLoanSeqAndDistrNOByApplySeq(String loanSeq, String distrNo, String applySeq);

	List<NlsApplyInfoVO> queryNlsApplyInfoByDnstsAndState2();



	public List<NlsApplyInfoVO> queryCusId(String cusId);


	List<NlsApplyInfoVO> queryByLmtSeqs(List<String> lmtSeqs) throws Exception;


	/**
	 * 需求编号：【】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：zhangxc
	 * 创建日期：2020年7月28日09:51:17
	 * 功能描述：通过客户证件类型、证件号码，申请状态查询在途用信信息
	 */
	public int countApplyInfoOnWay(NlsApplyInfoVO nlsApplyInfoVo);
	/**
	*description：
	*param：
	*return:
	*date: 2020/7/30 17:52
	*auther: gcb
	*/
	NlsApplyInfoVO queryLatestNlsApplyInfo(NlsApplyInfoVO nlsApplyInfoVO);
	/**
	 * 查询修改条数
	 * @author xieziwei
	 * @params  证件号&产品id
	 * @date 2020/8/3 11:09
	 * @version 0.1
	 */
	public int queryCountByCertCode(NlsApplyInfoVO nlsApplyInfoVO);
	/**
	 * 根据证件号和产品id修改还款账号
	 * @author xieziwei
	 * @params  证件号&产品id
	 * @date 2020/8/3 11:10
	 * @version 0.1
	 */
	public int updateAcctNoByCertCode(NlsApplyInfoVO nlsApplyInfoVO);

	/**
	 * 网贷获取状态为放款成功且未成功同步的用信申请记录
	 * @return
	 */
	List<NlsApplyInfoVO> queryNlsApplyInfoByDnstsAndState4Yed();

    public NlsApplyInfoVO queryInfoByCertCodeAndApplyDate(NlsApplyInfoVO nlsApplyInfoVo);


}
